From 8202ebb1124d90f26f47cee78c813d00c935e77b Mon Sep 17 00:00:00 2001 From: =?utf8?q?Roger=20Pau=20Monn=C3=A9?= Date: Mon, 4 Dec 2017 11:02:16 +0100 Subject: [PATCH] x86/pio: allow internal PIO handlers to return RETRY MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Fix handle_pio so internal PIO handlers can return X86EMUL_RETRY and it is properly handled by not advancing the IP. Signed-off-by: Roger Pau Monné Reviewed-by: Paul Durrant --- xen/arch/x86/hvm/io.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/xen/arch/x86/hvm/io.c b/xen/arch/x86/hvm/io.c index 9d9e1b0e40..7e8b8ac61c 100644 --- a/xen/arch/x86/hvm/io.c +++ b/xen/arch/x86/hvm/io.c @@ -157,8 +157,11 @@ bool handle_pio(uint16_t port, unsigned int size, int dir) break; case X86EMUL_RETRY: - /* We should not advance RIP/EIP if the domain is shutting down */ - if ( curr->domain->is_shutting_down ) + /* + * We should not advance RIP/EIP if the domain is shutting down or + * if X86EMUL_RETRY has been returned by an internal handler. + */ + if ( curr->domain->is_shutting_down || !hvm_io_pending(curr) ) return false; break; -- 2.30.2